package br.com.guarana.business.service;

import br.com.guarana.business.model.Cobertura;
import br.com.guarana.util.Util;
import java.util.List;
import javax.persistence.Query;

/**
 *
 * @author 
 */
public class CoberturaService extends PadraoService {

    public void salvar(Cobertura cobertura) {
        try {
            this.getDAO().getEntityManager().getTransaction().begin();            
            this.getDAO().salvar(cobertura);
            this.getDAO().getEntityManager().getTransaction().commit();

        } catch (Exception e) {
            e.printStackTrace();
            this.getDAO().getEntityManager().getTransaction().rollback();
        }
    }

    public void excluir(Cobertura cobertura) {
        try {
            this.getDAO().getEntityManager().getTransaction().begin();
            this.getDAO().excluir(cobertura);
            this.getDAO().getEntityManager().getTransaction().commit();

        } catch (Exception e) {
            e.printStackTrace();
            this.getDAO().getEntityManager().getTransaction().rollback();
        }
    }

    public Cobertura findCobertura(int id) {
        return (Cobertura) this.getDAO().find(Cobertura.class, id);
    }

    public List<Cobertura> buscaCoberturas(String nome) {
        //busca HQL
        StringBuilder sFrase = new StringBuilder("SELECT r FROM Cobertura r");

        //filtros        
        if (nome != null) {
            sFrase.append(Util.colocaWhereOuAnd(sFrase.toString()) + " UPPER(r.nome) LIKE '%" + nome.toUpperCase().trim() + "%'");
        }

        //order by
        sFrase.append(" ORDER BY r.nome");

        //query
        Query query = this.getDAO().getEntityManager().createQuery(sFrase.toString());
        query.setHint("toplink.refresh", "true");
        List<Cobertura> listaCobertura = query.getResultList();

        return listaCobertura;
    }

    public List<Cobertura> buscaTodasCoberturas() {
        StringBuilder sFrase = new StringBuilder("SELECT r FROM Cobertura r ORDER BY r.nome");
        Query query = this.getDAO().getEntityManager().createQuery(sFrase.toString());
        query.setHint("toplink.refresh", "true");
        List<Cobertura> listaCobertura = query.getResultList();
        return listaCobertura;
    }    
    
    /*
     * TESTES TESTES TESTES TESTES TESTES TESTES TESTES TESTES
     */

    public static void main(String[] args) {
        CoberturaService main = new CoberturaService();
        main.buscaCoberturas("morte");
        main.buscaTodasCoberturas();
        
    }
}

